package com.indexingsystem.boss.admin.mapper;


import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.indexingsystem.boss.Vo.FunctionesListVo;
import com.indexingsystem.boss.Vo.StatusList;
import com.indexingsystem.boss.Vo.TreeQueryVo;
import com.indexingsystem.boss.entity.Functiones;


public interface FunctionesMapper
{
    /**
     * 通过功能id删除功能信息.
     * 
     * @param functionId
     * @return
     */
    int deleteByPrimaryKey(String functionId);

    /**
     * 批量删除功能操作.
     * 
     * @param functionId
     * @return
     */
    int deleteFunctionesByIdBatch(@Param("list") List<String> list);

    /**
     * 新增功能操作.
     * 
     * @param record
     * @return
     */
    int insert(Functiones record);

    /**
     * 带条件新增功能.
     * 
     * @param record
     * @return
     */
    int insertSelective(Functiones record);

    /**
     * 获取功能列表.
     * 
     * @return
     */
    List<Functiones> selectFuncationsList(String queryCriteria);

    /**
     * 通过功能id查询功能详情.
     * 
     * @param functionId
     * @return
     */
    Functiones selectByPrimaryKey(String functionId);

    /**
     * 修改功能信息.
     * 
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(Functiones record);

    /**
     * 修改功能信息.
     * 
     * @param record
     * @return
     */
    int updateByPrimaryKey(Functiones record);

    /**
     * 获取功能树列表.
     * 
     * @return
     */
    List<FunctionesListVo> getFunctionesList();

    /**
     * 获取没有被禁用的功能列表.
     * 
     * @return
     */
    List<FunctionesListVo> getPermissionEnableList();

    /**
     * 获取权限树列表.
     * 
     * @return
     */
    List<FunctionesListVo> getPermissionList();

    /**
     * 获取角色权限树列表.
     * 
     * @return
     */
    List<FunctionesListVo> getRolePermissionList(String roleId);

    /**
     * 获取功能总数量.
     * 
     * @return
     */
    Integer getFunctionesCount(String queryCriteria);

    /**
     * 通过功能id查询子功能列表信息.
     * 
     * @param functionId
     * @return
     */
    List<Functiones> getSublevelFunctionsList(TreeQueryVo treeQueryVo);

    /**
     * 通过功能id获取功能列表.
     * 
     * @param functionId
     * @return
     */
    List<Functiones> getSublevelFunctionsListById(String functionId);

    /**
     * 获取子功能总数.
     * 
     * @param functionId
     * @return
     */
    Integer getSublevelFunctionsListSize(TreeQueryVo treeQueryVo);

    /**
     * 查询子功能分页查询
     * 
     * @param functionId
     * @return
     */
    List<Functiones> selectSublevelFunctionesList(String functionId);

    /**
     * 批量启用，禁用功能.
     * 
     * @param statusList
     * @return
     */
    int batchUpdateInstitutionsWithList(@Param("list") List<StatusList> list);

    
    
    /**
      * 通过查询功能编码是否已存在
      * 
      * @param record
      * @return
      */
     List<Functiones> selectFunctionesCodeExits(String functionCode);
     
     /**
      * 通过查询功能名称是否已存在
      * 
      * @param record
      * @return
      */
     List<Functiones> selectFunctionesNameExits(String functionName);
     
     
     /**
      * 通过查询英文名是否已存在
      * 
      * @param record
      * @return
      */    
      List<Functiones> selectFunctionesEnNameExits(String functionEName);
}